hvm: Improve APIC INIT/SIPI emulation, fixing it for call paths other than x86_emulate().
authorKeir Fraser <keir@xen.org>
Thu, 28 Mar 2013 11:44:11 +0000 (11:44 +0000)
committerKeir Fraser <keir@xen.org>
Thu, 28 Mar 2013 11:44:11 +0000 (11:44 +0000)
commit7242e0dc2c6c083ded570de159007d112ee34e88
tree0c91b27d4df9aa28dcda555e0b3f2f2897740dbd
parent3920df230bbe9eb2fcb5147df97f7ab7ece22fc2
hvm: Improve APIC INIT/SIPI emulation, fixing it for call paths other than x86_emulate().

In particular, on broadcast/multicast INIT/SIPI, we handle all target
APICs at once in a single invocation of the init/sipi tasklet. This
avoids needing to return an X86EMUL_RETRY error code to the caller,
which was being ignored by all except x86_emulate().

The original bug, and the general approach in this fix, pointed out by
Intel (yang.z.zhang@intel.com).

Signed-off-by: Keir Fraser <keir@xen.org>
xen/arch/x86/hvm/hvm.c
xen/arch/x86/hvm/viridian.c
xen/arch/x86/hvm/vlapic.c
xen/include/asm-x86/hvm/vlapic.h